草庐IT

Python NotImplemented 常量

全部标签

c++ - c++中文字常量的存储

我想知道文字常量实际存储在内存中的什么位置?例子:inti=5;char*data=char*&("abcdefgh");i和data的存储部分取决于它们声明的位置。但是编译器会在实际将其复制到变量之前存储5和"abcdefgh"吗?而且这里可以获取"abcdefgh"存放的地址,但是为什么获取不到5的地址呢? 最佳答案 5之类的整数文字可以是机器指令的一部分。例如:LDA,5会将值5加载到某些假想架构的处理器寄存器A中,并且由于5实际上是指令的一部分,因此它没有地址。很少(如果有的话)体系结构能够在机器指令中内联创建字符串文字,因

c++ - 如何在 C++ 中定义最终变量(可变常量)?

如何在C++中定义一个指向可变对象的常量?如果我声明staticconstCMyClass*IMPL;并赋值constCMyClass*CSomeClass::IMPL=newCMyClass;然后我只能在对象上调用const函数。它的内部是锁着的。这不是我想要的。如果我离开const限定符,我可以重新分配指针IMPL,因此它不再作为常量受到保护,它应该是。final似乎只适用于C++中的函数。在C++中是否有等同于Java的final变量? 最佳答案 您必须将const放在声明中的正确位置。规则是:const适用于紧靠左侧的事物,

c++ - 是否可以使用 SFINAE 检测类方法的常量性?

考虑这个结构:structfoo{voiddummy()const{}};是否可以使用SFINAE检测此方法的常量性?例如,我想在可以在static_assert中使用的特征中捕获此属性:static_assert(is_const_method::value,"Notconst!");我认为std::is_const或std::remove_const对我有帮助,但它们似乎不包含的这种“类型”常量。谢谢, 最佳答案 当然,看起来像这样:#includetemplatestructis_const_method:std::false

c++ - 为什么 C++ std::exception::what 成员常量?

我很好奇为什么std::exception::what成员函数是const?classexception{public:exception()throw(){}virtual~exception()throw();/**ReturnsaC-stylecharacterstringdescribingthegeneralcause*ofthecurrenterror.*/virtualconstchar*what()constthrow();}; 最佳答案 调用what()成员函数不应修改exception对象的可观察状态。通常,异常

c++ - 使用常量内存使用的 xml 解析

我正在尝试找到具有xpath支持的xml解析器,它使用少量内存,或者更确切地说是恒定内存量,我正在尝试解析大型xml文件,比如将近1Giga,我一直在阅读有关xqilla的信息,它似乎是使用非常大量的内存,因为它是基于dom的,如果我错了请纠正我..无论如何,对于这种用于C++和Linux的xml解析器有什么想法吗? 最佳答案 如果您基本上可以一次处理XML,那么SAX解析器将是个好主意。Apache怎么样XercesC++? 关于c++-使用常量内存使用的xml解析,我们在StackO

c++ - 优化器会根据编译时常量推导出数学表达式吗?

如果我有一些数学方程依赖于可以为零或非零的输入(模板参数,在编译时已知),优化器是否会计算方程并优化它知道将计算为0或1的表达式。例如:doublex=y*Eval::value;如果Eval::value是0,x永远是0.doublex=exp(y*Eval::value);如果Eval::value是0,x永远是1.优化器能否解决这个问题并替换x与0或1在代码的其他地方,还是这些计算会在运行时执行?我正在使用gcc4.7和-O3 最佳答案 编辑:我错了,编译器在使用float时按预期工作。好吧,-03中的gcc4.6.3似乎确实

c++ - GCC 4.7.1 具有重载的广义常量表达式问题

我尝试使用模板特化来实现编译时算法选择。我散列以下代码:templatestructchoose{typedefsize_t(*type)(constC*);staticconstexprtypevalue=java_string_hashcode;};我已将此结构专门用于char类型:templatestructchoose{typedefsize_t(*type)(constchar*);staticconstexprtypevalue=fnv_1a_32_hash;};但是当我尝试编译它时,我在GCC4.7.1中遇到以下错误:error:fieldinitializerisnot

c++ - 常量的编译时检查

如果我有一个函数intcalcStuff_dynamic(constinta,constintb)和一些模板元代码templatestructcalcStuff_static{staticconstintvalue=//somemorecode};有没有办法写一个包装器intcalcStuff(constinta,constintb){IF_THESE_ARE_KNOWN_CONSTANTS_AT_COMPILE_TIME(a,b)returncalcStuff_static::value;ELSE_TEMPLATE_WOULD_FAILreturncalcStuff_dynamic(

c++ - 说明乘以 2 个常量整数时的 decltype 输出

intmain(){constinta=1;constintb=2;typedefdecltype(a*b)multiply_type;cout程序的返回值是multiply_type是int。我很惊讶。我希望类型推导产生constint,并且由于表达式产生pr值,结果类型将是constint。PS:使用auto时,返回值将是int,因为它删除了const限定符。知道为什么multiply_type是int而不是constintwithdecltype吗?编辑:添加了一个与cv-qualifier相关的附加示例。#include#includeusingnamespacestd;str

c++ - move 具有常量数据成员或引用成员的类的构造函数

我在理解何时以及是否调用move构造函数或move赋值运算符时遇到一些问题,特别是在具有常量数据成员的类的上下文中。考虑类templateclassA{const*TconstP;//constantdatamemberexplicitA(const*Tp):P(p){std::cerr和测试程序classB{intX[100];Aget_a()const{returnA(this);}};intmain(){Bb;Aa=b.get_a();//whichoperator/ctorisusedfor'='here?a.test();}那么编译的结果是不同的,这取决于为类A中的move构